import scipy.integrate as spi
import numpy as np
import matplotlib.pyplot as plt
from IPython.core.pylabtools import figsize # import figsize
k=0.05
# N为人群总数
N = 10000
I1=7000
I2=3000
# β为传染率系数
beta = 0.85
# gamma为恢复率系数
gamma = 0.6
# Te为疾病潜伏期
Te = 2
# I_1为其他感染者的初始人数
I_1 = 0
# E_0为潜伏者的初始人数
E_0 = 1
# 为工作人员感染者的初始人数
I_2 = 0
# S_0为易感者的初始人数
S_0 = N - I_1 - E_0 - I_2
# T为传播时间
T = 200
#死亡率
alpha=0.023
# INI为初始状态下的数组
INI = (S_0,E_0,I_1,I_2)

def funcSEIR(inivalue,_):
 Y = np.zeros(4)
 X = inivalue
 # 易感个体变化
 Y[0] = gamma*(X[2]+X[3])-beta*X[0]*X[2]/(1+X[0]+X[2])-beta*X[0]*X[3]/(1+X[0]+X[3])
 # 潜伏个体变化
 Y[1] = beta*X[0]*X[2]/(1+X[0]+X[2])+beta*X[0]*X[3]/(1+X[0]+X[3]) - X[1] / Te
 E1=I1/N*X[1]
 E2=I2/N*X[1]
 # 感染个体变化
 Y[2] = E1 / Te-(alpha+gamma)*X[2]
 # 治愈个体变化
 Y[3] = E2 / Te - (alpha + gamma) * X[3]
 return Y

T_range = np.arange(0,T + 1)

RES = spi.odeint(funcSEIR,INI,T_range)

plt.plot(RES[:,0],color = 'darkblue',label = 'Susceptible',marker = '.')
plt.plot(RES[:,1],color = 'orange',label = 'Exposed',marker = '.')
plt.plot(RES[:,2],color = 'red',label = 'Others_Infection',marker = '.')
plt.plot(RES[:,3],color = 'green',label = 'personnel_Infection',marker = '.')

plt.title('Model')
plt.legend()
plt.xlabel('Day')
plt.ylabel('Number')
plt.savefig('E:/SEIS/image/17.jpg',dpi=144)#保存图片
plt.show()